const os = require('os');
const fs = require('fs');
const { execSync } = require('child_process');

function getosinfo(){
  const kyinfoPath='/etc/.kyinfo';
  const osReleasePath ='/etc/os-release';
  
      //1、架构
      //2、是否是麒麟系统
      //3、是桌面系统还是服务器系统
      //4、是否是V10
      //5、是否带sp，是sp几
      //6、小版本号
      //7、定制版字符
  var  os_arch; //arch x86_64
  var  os_org;      //Kylin
  var  os_type;     // Desktop Server
  var  os_release;// eg:2203 
  var  os_ver; // V10-SP1-HWE
  var  os_custom;  
  var  dist_id;
  var  os_info
  /*分类型进行处理 
  1.存在.kyinfo的系统 ，取值dist_id 中 架构之前的信息
  2.不在.kyinfo的系统，但是存在os-release  的kylin系统
  3.不是kylin的系统，但是存在os-release
  目前可以先做第一和第二种分类
  */
  let data;
  if (fs.existsSync(kyinfoPath)) {
    //kylin-desktop-v10-sp1-hwe-2303-x86_64
    // 在这里可以继续读取文件内容或进行其他操作
    try {
      data = fs.readFileSync(kyinfoPath, 'utf8');
      // 使用 split 方法将文件内容分割成行数组
      const lines = data.split('\n');
      // 遍历行数组 获取系统架构
      lines.forEach((line) => {
        if(line.startsWith("arch=")){
          os_arch=line.slice(5);
        }
       else if(line.startsWith("dist_id=")){
          dist_id=line.slice(8).replace('-Release','');
        }
      });//end lines
      if(dist_id.length>0){
        os_info = dist_id.slice(0,dist_id.indexOf(os_arch)+os_arch.length).toLowerCase();
        console.log(os_info);
        return os_info;
      }
    } catch (err) {
      os_info="";
    }
  } else
   if (fs.existsSync(osReleasePath)) {
    // 在这里可以继续读取文件内容或进行其他操作
    //kylin-desktop-v10-sp1-2303-x86_64
    try {
      data = fs.readFileSync(osReleasePath, 'utf8');
      // 使用 split 方法将文件内容分割成行数组
      const lines = data.split('\n');
      var codename;
      // 遍历行数组 获取系统架构
      lines.forEach((line) => {
        if(line.startsWith("ID=")){
          os_org=line.slice(3); //kylin
        }
        else if(line.startsWith("KYLIN_RELEASE_ID=")){
          os_release=line.slice(17).replace(/"/g,''); //2203
        }
        else if(line.startsWith("ID_LIKE=")){
          var tmp = line.slice(8).toLowerCase();
          os_type= tmp==="debian" ? "desktop":"server"
        }
        else if(line.startsWith("VERSION_ID=")){
          os_ver= line.slice(11).replace(/"/g,'');
        }
        else if(line.startsWith("PROJECT_CODENAME=")){
          codename = line.slice(17).toLowerCase();
        }
      });//end lines
      
        os_arch = execSync('arch').toString().trim();
        codename = codename.replace(`${os_ver}`,`${os_ver}-`);
        os_info = os_org+"-"+ os_type+"-"+codename+"-"+os_release+"-"+os_arch;
        console.log(os_info);
    } catch (err) {
        os_info ="";
    }
  }else {
    //待处理
    os_info="";
  }
  return os_info;
}

module.exports = {getosinfo}

  
